#include "lcd.h"
#include <dlfcn.h>

// 甲方、使用者
int main(int argc, char const *argv[]) // ./a.oout  x.bmp
{
    if(argc != 2)
    {
        printf("请指定一张BMP图片\n");
        exit(0);
    }

    // 1. 初始化LCD
    struct LCD_info lcdinfo;
    init_LCD(&lcdinfo);
    clear_LCD(&lcdinfo, LCD_BLACK); // 将屏幕设置为黑色

    void *handle;
    if(strstr(argv[1], ".bmp"))
    {
        handle = dlopen("./libbmp.so",RTLD_NOW);
        if(handle == NULL)
        {
            fprintf(stderr,"打开libbmp.so失败：%s\n",dlerror());
            return 0;
        }
    }
    else if(strstr(argv[1], ".jpg") || strstr(argv[1], ".jpeg"))
    {
        handle = dlopen("./libjpg.so",RTLD_NOW);
        if(handle == NULL)
        {
            fprintf(stderr,"打开libjpg.so失败：%s\n",dlerror());
            return 0;
        }
    }

    void (*display)(const char *, struct LCD_info *, int) = dlsym(handle, "display");

    // 2. 显示图片
    display(argv[1], &lcdinfo, CENTER); 

    // 3. 释放资源
    relese_LCD(&lcdinfo);

    return 0;
}
